<?php
/**
 * 自定义的异常处理函数。
 * 在异常未被try/catch捕获时，代码再执行完此函数后终止。
 * @param <type> $exception 被抛出的异常对象
 */
function site_exception_handler($exception){
    //日志
    $format = "system error:  Uncaught exception '%s' in %s: line %s \r\nStack trace:\r\n%s\r\n";
    $msg = sprintf( $format, $exception->getMessage(), $exception->getFile(), $exception->getLine(), $exception->getTraceAsString() );
    Log_File::writeExecptionLog($msg, true);
    //转向到统一的提示页面
}

/**
 * 自定义的错误处理函数。
 * 在系统发生严重错误或者trigger_error()被呼叫时执行。
 * @param <int> $errno 错误的级别，整型。为系统预定义错误代码。
 * @param <string> $errstr 错误信息，字符。
 * @param <string> $errfile 产生错误的文件名，可选。
 * @param <int> $errline 产生错误的代码所在的行数，可选。
 */
function site_error_handler($errno, $errstr = "", $errorfile = "", $errline = 0){
    //根据错误级别记录日志
    $errno = intval($errno);
    $error_log_level = array(1, 2, 4, 16, 32, 64, 4096);
    if( in_array($errno, $error_log_level) ) {
        Log_File::writeSysErrorLog($errno, $errstr, $errorfile, $errline, true);
    }
}

/**
 * 设置系统的异常处理器
 */
set_exception_handler("site_exception_handler");

/**
 * 设置系统的错误处理器
 */
set_error_handler("site_error_handler");
?>